package com.test.practice.oo.finalStatic;

import java.util.ArrayList;

public class FinalStaticTest6 {

	private static final String sfStr = "aaa";
	private static String sStr = null;
	private final String fStr = null;
	private static final int sfInt = 0;
	private static final Integer sfInte = new Integer(9);
	private static final ArrayList<String> sfAlStr = new ArrayList<String>();

	private void test() {
		System.out.println("------------------处理之前----------------");
		System.out.println("sfStr:" + sfStr + "\r\n");
		System.out.println("sStr:" + sStr + "\r\n");
		System.out.println("fStr:" + fStr + "\r\n");
		System.out.println("sfInt:" + sfInt + "\r\n");
		System.out.println("sfInte:" + sfInte + "\r\n");
		System.out.println("sfAlStr:" + sfAlStr + "\r\n");

		/**
		 * The final field FinalStaticTest6.sfStr cannot be assigned
		 * 错误，final表示终态,不可以改变变量本身.
		 */
		// sfStr = "bbb";
		/**
		 * 正确，static表示类变量,值可以改变
		 */
		sStr = "ccc";
		/**
		 * The final field FinalStaticTest6.fStr cannot be assigned 错误,
		 * final表示终态，在定义的时候就要初值（哪怕给个null），一旦给定后就不可再更改。
		 */
		// fStr = "ddd";
		/**
		 * The final field FinalStaticTest6.sfInt cannot be assigned 错误,
		 * final表示终态，在定义的时候就要初值（哪怕给个null），一旦给定后就不可再更改。
		 */
		// sfInt = 5;
		/**
		 * The final field FinalStaticTest6.sfInte cannot be assigned 错误,
		 * final表示终态，在定义的时候就要初值（哪怕给个null），一旦给定后就不可再更改
		 */
		// sfInte = new Integer(8);
		// 正确，容器变量本身没有变化，但存放内容发生了变化。这个规则是非常常用的，有很多用途。
		sfAlStr.add("a");
		sfAlStr.add("b");

		System.out.println("----------------------处理之后------------");
		System.out.println("sfStr:" + sfStr + "\r\n");
		System.out.println("sStr:" + sStr + "\r\n");
		System.out.println("fStr:" + fStr + "\r\n");
		System.out.println("sfInt:" + sfInt + "\r\n");
		System.out.println("sfInte:" + sfInte + "\r\n");
		System.out.println("sfAlStr:" + sfAlStr + "\r\n");
	}

	public static void main(String[] args) {
		new FinalStaticTest6().test();
	}
}
